package com.cms.recursoshumanos.json.object;

import com.cms.recursoshumanos.cache.ListaBeneficiosAdmCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.json.me.JSONArray;
import com.cms.recursoshumanos.json.me.JSONException;
import com.cms.recursoshumanos.json.me.JSONObject;
import com.cms.recursoshumanos.object.BeneficioAdministrativo;
import com.cms.recursoshumanos.object.list.ListaBeneficioAdministrativo;

public class JsonObjectGetBeneficiosAdministrativos 
{

	public static JsonObjectGetBeneficiosAdministrativos _instance = null;
	public static JsonObjectGetBeneficiosAdministrativos getInstance() {
		if(_instance == null)
			_instance = new JsonObjectGetBeneficiosAdministrativos();
		
		return _instance;
	}
	public String Result;
	private static final String 
		GETBENEFICIOSLOT = "GETBENEFICIOSLOT",
		GETBENEFICIOSLOT_STATUS = "STATUS",
		GETBENEFICIOSLOT_DATA = "DATA",
				
		GETBENEFICIOSLOT_DATOS_BENEFICIOS = "DATOS_BENEFICIOS",
		
		GETBENEFICIOSLOT_BENEFICIO_ADMINISTRATIVO_ID = "beneficio_administrativo_id",
		GETBENEFICIOSLOT_NOMBRE_BENEFICIO_ADMINISTRATIVO = "nombre_beneficio_administrativo",
		GETBENEFICIOSLOT_DESCRIPCION_BENEFICIO_ADMINISTRATIVO = "descripcion_beneficio_administrativo";
	

	public void fromJSON (String jsonString) 
	{
		if (jsonString != null )
		{
			if (!jsonString.equals(""))
			{
				try
				{
					JSONObject jsonObject = new JSONObject(jsonString);
					JSONObject userdetails = jsonObject.getJSONArray(GETBENEFICIOSLOT).getJSONObject(0);
					String status = userdetails.getString(GETBENEFICIOSLOT_STATUS);
					JSONArray data = userdetails.getJSONArray(GETBENEFICIOSLOT_DATA);
					
					Result = status;
					
					if (status.equals(Constant.CODE_OK))
					{
						JSONObject object_data = data.getJSONObject(0);
						JSONArray datos_beneficios = object_data.getJSONArray(GETBENEFICIOSLOT_DATOS_BENEFICIOS);
						
						
						
						ListaBeneficioAdministrativo listado = new ListaBeneficioAdministrativo();
						for (int i = 0; i < datos_beneficios.length(); i++ )
						{
							
							
							JSONObject json_beneficio = datos_beneficios.getJSONObject(i);
							
							
							
							listado.addBeneficioAdministrativo(new BeneficioAdministrativo(
																								Integer.parseInt(json_beneficio.getString(GETBENEFICIOSLOT_BENEFICIO_ADMINISTRATIVO_ID)), 
																								json_beneficio.getString(GETBENEFICIOSLOT_NOMBRE_BENEFICIO_ADMINISTRATIVO), 
																								(json_beneficio.getString(GETBENEFICIOSLOT_DESCRIPCION_BENEFICIO_ADMINISTRATIVO).equals("null") ?
																										null :
																										json_beneficio.getString(GETBENEFICIOSLOT_DESCRIPCION_BENEFICIO_ADMINISTRATIVO)	)
																							)
																);
						
							
										
						}
		
						ListaBeneficiosAdmCache.getInstance().setListaBeneficio(listado);
						
						ListaBeneficiosAdmCache.getInstance().setFechaCache();
					}
				} 
				catch (JSONException ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
				catch (Exception ex)
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
				
			}
			else
			{
				Result = Constant.CODE_NOT_SERVER_RESPONSE;
			}
		}
		else
		{
			Result = Constant.CODE_NOT_SERVER_RESPONSE;
		}
	}

	public String getResult()
	{
		return Result;
	}
	
}


